// 创建web服务器， 书写后端接口，供promise阶段的文件去访问

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
// 托管静态文件
app.use(express.static('b - Promise'));
// 处理客户端请求参数
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// 设置跨域，允许任何请求方式请求我接口的数据
app.all('*', function (req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'PUT, GET,POST, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'X-Requested-with');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Headers', 'mytoken');
  next();
});

// 设置测试接口一：/data
app.get('/data', (req, res) => {
  res.send('Hello Data');
});
// 设置测试接口二：/data1
app.get('/data1', (req, res) => {
  res.send('Hello Data1');
});
// 设置测试接口三：/data2
app.get('/data2', (req, res) => {
  res.send('Hello Data2');
});

// 异步请求接口一：
app.get('/a1', (req, res) => {
  setTimeout(function () {
    res.send('Hello a1');
  }, 1000);
});
// 异步请求接口二：
app.get('/b1', (req, res) => {
  setTimeout(function () {
    res.send('Hello b1');
  }, 2000);
});
// 异步请求接口三：
app.get('/c1', (req, res) => {
  setTimeout(function () {
    res.send('Hello c1');
  }, 3000);
});

// fetch API 接口请求测试一：
app.get('/fetch1', (req, res) => {
  res.send('Hello fatch1');
});

// fetch API中的GET, POST, DELETE, PUT，接口测试
// 1: GET,根据id查询数据
app.get('/books/:id', (req, res) => {
  res.send('fetch - GET的id是：' + req.params.id);
});
// 2：POST，将接收到的客户端的请求参数信息，打印出来
app.post('/books', (req, res) => {
  res.send(
    'fetch -POST接收到的请求参数是:' +
      req.body.username +
      '====' +
      req.body.password
  );
});
// 3:DELETE 删除， 根据id提示删除成功
app.delete('/books/:id', (req, res) => {
  res.send('fetch - DELETE删除成功， ID是：' + req.params.id);
});
// 4:PUT更新， 提示更新成功，并将接收到的信息给打印
app.put('/books/:id', (req, res) => {
  res.send(
    'fetch - PUT更新成功， 接收到的参数是：' +
      req.params.id +
      '====' +
      req.body.uname +
      '=====' +
      req.body.pwd
  );
});

// fetch API响应的数据格式， 服务器故意向客户端响应json字符串，客户端需要使用JSON.parse转对象
app.get('/json', (req, res) => {
  res.json({
    uname: 'zs',
    age: 12,
  });
});

// 开启web服务器，监听3000端口，客户端http://localhost:3000/xxx请求web服务器的接口数据
app.listen(3000, () => {
  console.log('服务器已经启动');
});
